/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import model.Aluno;
import org.hibernate.*;
import org.lavieri.modelutil.cep.WebServiceCep;
import util.HibernateUtil;

/**
 *
 * @author Crevin
 */
@ManagedBean (name="alunoImplements")
@SessionScoped
public class AlunoImplementsPessoaDAO implements IPessoaDAO{
    
    private Aluno aluno;
    private Session sessao;
    private String cepValidation = "";
    
    public AlunoImplementsPessoaDAO(){
        aluno = new Aluno();
    }
    
    public Aluno getAluno(){
        return aluno;
    }
    
    public void setAluno(Aluno aluno){
        this.aluno = aluno;
    }
    
    public String getCepValidation(){
        return this.cepValidation;
    }
    
    public void setCepValidation(String cpf){
        this.cepValidation = cpf;
    }
    
    @Override
    public String salvar() {
        
        sessao = HibernateUtil.getSession();
        Transaction tr = sessao.beginTransaction();
        String msg = "";
        try{
            aluno.setTipo(1);
            aluno.setDataCadastro(new Date());
            aluno.setDataAprovacao(new Date());
            if (getCep(aluno.getCep())) {
                sessao.saveOrUpdate(this.aluno);
                tr.commit();
                msg = "_frmSucesso";
            }
            else
                msg = "_frmCadAluno";
        }
        catch(Exception ex){
            tr.rollback();
            msg = "_frmInsucesso";        
        }
        finally{            
            sessao.close();
            return msg;
        }
    }
    
    public boolean getCep(String cep){
        WebServiceCep webServiceCep = WebServiceCep.searchCep(cep);
        //A ferramenta de busca ignora qualquer caracter que n�o seja n�mero.

        //caso a busca ocorra bem, imprime os resultados.
        if (webServiceCep.wasSuccessful()){
            return true;
        }
        //caso haja problemas imprime as exce��es.
        else{
            cepValidation = "Cep inválido!";
            return false;
        }    
    }
}
